class Storage {
	// 设置token
	setAccessToken(tokenData) {
		if (tokenData.accessToken) {
			uni.setStorageSync('accessToken', tokenData.accessToken);
		}
		if (tokenData.refreshToken) {
			uni.setStorageSync('refreshToken', tokenData.refreshToken);
		}
		if (tokenData.expiresIn) {
			const expireTime = Date.now() + tokenData.expiresIn;
			uni.setStorageSync('tokenExpireTime', expireTime);
		}
	}
	// 单独设置 refresh token
	setRefreshToken(refreshToken) {
		if (refreshToken) {
			uni.setStorageSync('refreshToken', refreshToken);
		}
	}

	// 获取access token
	getAccessToken() {
		return uni.getStorageSync('accessToken');
	}

	// 获取refresh token
	getRefreshToken() {
		return uni.getStorageSync('refreshToken');
	}

	// 检查token是否即将过期
	isTokenExpiringSoon(threshold = 300000) { // 默认5分钟
		const expireTime = uni.getStorageSync('tokenExpireTime');
		if (!expireTime) return true;

		return expireTime - Date.now() < threshold;
	}

	// 清除所有token
	clearTokens() {
		uni.removeStorageSync('accessToken');
		uni.removeStorageSync('refreshToken');
		uni.removeStorageSync('tokenExpireTime');
		uni.removeStorageSync('userInfo');
	}
	// 设置用户信息
	setUserInfo(userInfo) {
		uni.setStorageSync('userInfo', userInfo);
	}

	// 获取用户信息
	getUserInfo() {
		 try {
		    const value = uni.getStorageSync('userInfo');
		    if (value && typeof value === 'string') {
		      return JSON.parse(value);
		    }
		    return value;
		  } catch (e) {
		    console.error('读取用户信息失败:', e);
		    return null;
		  }
	}

	// 设置用户信息
	setUserInfo(userInfo) {
		try {
			if (userInfo && typeof userInfo === 'object') {
				// 如果是对象，先序列化
				userInfo = JSON.stringify(userInfo);
			}
			uni.setStorageSync('userInfo', userInfo);
			console.log('✅ 用户信息存储成功');
		} catch (e) {
			console.error('❌ 用户信息存储失败:', e);
		}
	}

	set(key, value) {
		try {
			uni.setStorageSync(key, value);
			return true;
		} catch (e) {
			console.error('存储失败:', e);
			return false;
		}
	}

	get(key, defaultValue = null) {
		try {
			const value = uni.getStorageSync(key);
			return value !== '' ? value : defaultValue;
		} catch (e) {
			console.error('读取存储失败:', e);
			return defaultValue;
		}
	}

	remove(key) {
		try {
			uni.removeStorageSync(key);
			return true;
		} catch (e) {
			console.error('删除存储失败:', e);
			return false;
		}
	}

	clear() {
		try {
			uni.clearStorageSync();
			return true;
		} catch (e) {
			console.error('清空存储失败:', e);
			return false;
		}
	}
}

export default new Storage();